package main

import (
	"fmt"
	"server/dao"
	"server/models"
	"server/routers"
	serviceRdbmq "server/service/rdbmq"
	"server/setting"
)

// @title 这里写标题
// @version 1.0
// @description 这里写描述信息
// @termsOfService http://swagger.io/terms/

// @contact.name 这里写联系人信息
// @contact.url http://www.swagger.io/support
// @contact.email support@swagger.io

// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html

// @host 这里写接口服务的host
// @BasePath 这里写base path
func main() {
	// 加载配置文件
	if err := setting.Init(); err != nil {
		fmt.Printf("load config from file failed, err:%v\n", err)
		return
	}
	// 创建数据库
	// sql: CREATE DATABASE server;
	// 连接数据库
	err := dao.InitMySQL(setting.Conf.MySQLConfig)
	if err != nil {
		fmt.Printf("连接mysql失败:%v\n", err)
		return
	}
	defer dao.Close() // 程序退出关闭数据库连接

	rdbErr := dao.InitRdbClient()
	if rdbErr != nil {
		fmt.Printf("连接redis失败:%v\n", rdbErr)
		return
	}

	// 模型绑定
	models.ModelMigrate()

	// 启动定时任务
	// crons.TestCron()
	// 注册redis消费者
	go serviceRdbmq.RdbCon()
	// 注册路由
	r := routers.SetupRouter()
	if err := r.Run(fmt.Sprintf(":%d", setting.Conf.Port)); err != nil {
		fmt.Printf("server startup failed, err:%v\n", err)
	}

}
